Many systems utilize remote monitoring of various metrics, from network conditions (e.g. congestion, bandwidth, latency, etc.) to device conditions (e.g. temperature, utilization, storage levels, etc.) to any other type and form of metrics (e.g. accelerometer values, environmental humidity, voltage presence, etc.). These metrics may be gathered by a local or client device, and transmitted via a network to a remote or monitoring device.
Depending on the number of metrics and frequency of monitoring, the amount of data being exchanged between the client device and monitoring device may be very large, consuming significant bandwidth and network resources. Worse, as the system scales, the amount of data may become very large. For example, a centralized monitoring device may be in communication with thousands or tens of thousands of networked Internet-of-Things devices, each of which may be sending a dozen different monitoring values every few seconds, resulting in massive amounts of data being received and processed by the monitoring device, a large number of network sockets and buffers being utilized, and even significant amounts of electrical power. All of this resource consumption limits the scalability of the monitoring system.